package realQuestion.threeQuick;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;



//小美排序
//        时间限制： 3000MS内存限制： 589824KB
//        题目描述：
//        n的排列是指有一个长度为n的数组[pi]中所有数各不相同，并且均在1到n之间，例如[3, 1, 2]是3的排列。小美想把序列排成递增序列，即[1, 2, 3, …, n]，但她只能进行一种操作。首先她要在排列中任意选择两个不同的数取出。然后她将两个数中较大的放在排列的最后一位，较小的放在排列的第一位。她可以进行无限次这样的操作。请问她最少需要多少次才能将排序排列为递增序列。
//        输入描述
//        第一行是数组的长度：n。
//        第二行有n个数字pi（i=1,2,3,...,n）表示排列。
//        1≤n≤50000, 1≤pi≤n
//        输出描述
//        输出一个整数，表示最少需要多少次。
//        样例输入
//        5
//        1 5 4 2 3
//        样例输出
//        2
//        提示
//        第一次选4，2， 第二次选1， 5
//        思路与代码
//        贪心构造。
//        修改次数的最大上限为n//2，因此我们只需要考虑哪些是额外修改的即可。
//        例如，n=6，nums [6 3 5 2 4 1]
//        那么我们可以保留[3,4]的相对关系，首先将[2,5]进行调整得到[2,6,3,4,1,5]，接着将[1,6]调整，得到[1,2,3,4,5,6]，即可，也就是 n//2 - 1= 2。
public class Test3 {

    //  CKG TODO 2023/5/15:  贪心算法　
    public static int find(int[] p) {


        int length = p.length;
        int i, j;
        if (length % 2 == 0) {
            i = length / 2;
            j = length / 2 + 1;
        } else {
            i = length / 2;
            j = length / 2 + 2;
        }


        int cnt = length / 2;


        while (i > 0) {
            if (p[i] < p[j]) {
                cnt -= 1;
            }
            if (p[i - 1] < p[i] && p[j + 1] > p[j]) {
                i -= 1;
                j += 1;
            } else {
                break;
            }


        }

        return cnt;
    }


    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s1 = scanner.nextLine();
        int count = Integer.valueOf(s1);
        int[] p = new int[count];
        s1 = scanner.nextLine();
        String[] strings = s1.split("\\s");
        for (int j = 0; j < count; j++) {
            p[j] = Integer.valueOf(strings[j]);
        }

        System.out.println(find(p));

    }

}
